import request from "@/utils/request";

const VEHICLE_BASE_URL = "/api/v1/vehicles";

const VehicleAPI = {
  /**
   * 分页查询车辆列表
   *
   * @param queryParams 查询参数
   */
  getPage(queryParams: VehiclePageQuery) {
    return request<any, PageResult<VehiclePageVO[]>>({
      url: "/client/v1/pageList",
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 获取车辆表单详情
   *
   * @param vehicleId 车辆ID
   * @returns 车辆表单详情
   */
  getFormData(vehicleId: string) {
    return request<any, VehicleForm>({
      url: `${VEHICLE_BASE_URL}/${vehicleId}/form`,
      method: "get",
    });
  },

  /**
   * 添加车辆
   *
   * @param data 车辆表单数据
   */
  create(data: VehicleForm) {
    return request({
      url: `${VEHICLE_BASE_URL}`,
      method: "post",
      data,
    });
  },

  /**
   * 更新车辆
   *
   * @param id 车辆ID
   * @param data 车辆表单数据
   */
  update(id: string, data: VehicleForm) {
    return request({
      url: `${VEHICLE_BASE_URL}/${id}`,
      method: "put",
      data,
    });
  },

  /**
   * 删除车辆
   *
   * @param ids 车辆ID，多个用逗号分隔
   */
  deleteByIds(ids: string) {
    return request({
      url: "/client/v1/del?id=" + ids,
      method: "delete",
    });
  },

  /**
   * 导出车辆
   *
   * @param queryParams 查询参数
   */
  export(queryParams: VehiclePageQuery) {
    return request({
      url: `${VEHICLE_BASE_URL}/export`,
      method: "get",
      params: queryParams,
      responseType: "blob",
    });
  },

  /**
   * 获取车辆下拉选项
   */
  getOptions() {
    return request<any, OptionType[]>({
      url: `${VEHICLE_BASE_URL}/options`,
      method: "get",
    });
  },
};

export default VehicleAPI;

/**
 * 车辆分页查询参数
 */
export interface VehiclePageQuery extends PageQuery {
  /** 搜索关键字 */
  keywords?: string;
  /** 车辆状态 */
  status?: number;
  /** 车辆类型 */
  vehicleType?: string;
  /** 所属用户ID */
  userId?: string;
  /** 创建时间 */
  createTime?: [string, string];
}

/** 车辆分页对象 */
export interface VehiclePageVO {
  /** 车辆ID */
  id: string;
  /** 车牌号 */
  plateNumber: string;
  /** 车辆品牌 */
  brand?: string;
  /** 车辆型号 */
  model?: string;
  /** 车辆类型 */
  vehicleType?: string;
  /** 车辆颜色 */
  color?: string;
  /** 发动机号 */
  engineNumber?: string;
  /** 车架号 */
  vinNumber?: string;
  /** 司机姓名 */
  driverName?: string;
  /** 司机电话 */
  driverPhone?: string;
  /** 车辆状态(1:正常;0:停用) */
  status?: number;
  /** 所属用户ID */
  userId?: string;
  /** 所属用户名称 */
  userName?: string;
  /** 创建时间 */
  createTime?: Date;
  /** 备注 */
  remark?: string;
}

/** 车辆表单类型 */
export interface VehicleForm {
  /** 车辆ID */
  id?: string;
  /** 车牌号 */
  plateNumber: string;
  /** 车辆品牌 */
  brand?: string;
  /** 车辆型号 */
  model?: string;
  /** 车辆类型 */
  vehicleType?: string;
  /** 车辆颜色 */
  color?: string;
  /** 发动机号 */
  engineNumber?: string;
  /** 车架号 */
  vinNumber?: string;
  /** 司机姓名 */
  driverName?: string;
  /** 司机电话 */
  driverPhone?: string;
  /** 车辆状态 */
  status?: number;
  /** 所属用户ID */
  userId?: string;
  /** 备注 */
  remark?: string;
}
